package org.ch03.hw.demo01;

/**
 * 主人可以带 "任意" 动物去逛街
 *
 * @author ZJL
 * @date 2025-03-25
 */
public class People<T> {
    /**
     * 宠物
     */
    private T pet;

    public T getPet() {
        return pet;
    }

    public void setPet(T pet) {
        this.pet = pet;
    }

    /**
     * 逛街
     */
    public void shopping() {
        System.out.println("逛街...");

        Class<?> clazz = pet.getClass();

        // 注意：在编译中无法确定 T 是谁，因此无法调用 call 方法
        // 解决一：强转
        // 解决二：设置边界
        // 解决三：反射


        // ...
        if (pet instanceof Pet) {
            System.out.printf("主人带%s逛街，宠物都会叫一下%n",((Pet) pet).getName());
            if (pet instanceof Call){
               ((Call) pet).call();
            }
        }
    }
}
